Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
start [2010/11/23 10:17] admin |
start [2011/03/15 11:11] (atual) admin |
||
---|---|---|---|
Linha 37: | Linha 37: | ||
=== Lista 1) Exercicios de revisão de programação - 19/08/2010 === | === Lista 1) Exercicios de revisão de programação - 19/08/2010 === | ||
- | - Calcular as somas <latex>S(N)=\sum_{i=1}^{N-1} \frac{1}{i^2}</latex> e <latex>SI(N)=\sum_{i=1}^{N-1} \frac{1}{(N-i)^2}</latex> com i sendo uma variável ponto flutuante de precisão simples. Plote as diferencas <latex> \left|S(N)-S_{\infty}\right|/S_{\infty}</latex> vs N e <latex> \left|SI(N)-S_{\infty}\right|/S_{\infty}</latex> vs N para <latex>N=100,200,..,10^6</latex> onde <latex>S_{\infty}=\frac{\pi ^2}{6}</latex> | + | - Somas não são comutativas no computador! Calcule as somas <latex>S(N)=\sum_{i=1}^{N-1} \frac{1}{i^2}</latex> e <latex>SI(N)=\sum_{i=1}^{N-1} \frac{1}{(N-i)^2}</latex> com i sendo uma variável ponto flutuante de precisão simples e coloque **em um mesmo gráfico** as diferencas <latex> \left|S(N)-S_{\infty}\right|/S_{\infty}</latex> vs N e <latex> \left|SI(N)-S_{\infty}\right|/S_{\infty}</latex> vs N para <latex>N=100,200,..,10^6</latex> onde <latex>S_{\infty}=\frac{\pi ^2}{6}</latex>. |
- Escrever um programa que recebe como entrada um número inteiro em representação decimal e retorna sua expansão binária. Para tal, crie uma função que verifica se o i-ésimo bit de uma palavra (variável do programa) vale zero ou um. | - Escrever um programa que recebe como entrada um número inteiro em representação decimal e retorna sua expansão binária. Para tal, crie uma função que verifica se o i-ésimo bit de uma palavra (variável do programa) vale zero ou um. | ||
- Considere um número de ponto flutuante de N bits com E bits reservados para o expoente e M=N-E-1 para a mantissa. Represente TODOS os números obtidos nesta representação em um grafico de barras no gnuplot. Para cada número x, armazene um par (x,1) e plote o arquivo de dados com ''with impulses''. Reveja [[http://www.psc.edu/general/software/packages/ieee/ieee.php|aqui]] a definição de números de ponto flutuante. \\ {{:floating_point.jpg?300|}} | - Considere um número de ponto flutuante de N bits com E bits reservados para o expoente e M=N-E-1 para a mantissa. Represente TODOS os números obtidos nesta representação em um grafico de barras no gnuplot. Para cada número x, armazene um par (x,1) e plote o arquivo de dados com ''with impulses''. Reveja [[http://www.psc.edu/general/software/packages/ieee/ieee.php|aqui]] a definição de números de ponto flutuante. \\ {{:floating_point.jpg?300|}} | ||
Linha 49: | Linha 49: | ||
Sendo a derivada de uma função <latex>f(x)</latex> definida por <latex> \frac{df}{dx}=\lim_{h \to 0}\frac{f(x+h)-f(x)}{h}</latex> e | Sendo a derivada de uma função <latex>f(x)</latex> definida por <latex> \frac{df}{dx}=\lim_{h \to 0}\frac{f(x+h)-f(x)}{h}</latex> e | ||
- | <latex>f(x+h)=f(x)+hf^{\prime}(x)+\frac{h^2}{2}f^{\prime \prime}(x)+\ldots</latex>, o método de Euler (com difereças posteriores) corresponde ao truncamento desta expansão em ordem h. Obtemos assim que <latex> \frac{df}{dx}=\frac{f(x+h)-f(x)}{h}</latex>. | + | <latex>f(x+h)=f(x)+hf^{\prime}(x)+\frac{h^2}{2}f^{\prime \prime}(x)+\ldots</latex>, o método de Euler (com difereças posteriores) corresponde ao truncamento desta expansão em ordem h. Obtemos assim que a derivada no ponto x é aproximada por <latex>\frac{df}{dx}=\frac{f(x+h)-f(x)}{h}</latex>. |
- Mostre que o método de Euler com diferenças centradas é exato em <latex>{\cal O}(h^2)</latex>, onde h é o passo de discretização da derivada. Nesse método escrevemos <latex> \frac{df}{dx}=\frac{f(x+h)-f(x-h)}{2h}</latex> | - Mostre que o método de Euler com diferenças centradas é exato em <latex>{\cal O}(h^2)</latex>, onde h é o passo de discretização da derivada. Nesse método escrevemos <latex> \frac{df}{dx}=\frac{f(x+h)-f(x-h)}{2h}</latex> | ||
- | - Calcule a derivada numérica de <latex>f(x)=\frac{sin(x^2)e^{x/3}}{\sqrt{(x^2+4)}}</latex> no ponto x=3 usando o método de Euler simples com passo de discretização h entre <latex>10^{-8}</latex> e <latex>1</latex> e faça um gráfico mostrando a diferença relativa entre a derivada numérica e o valor exato da derivada para ponto flutuante com precisão simples e dupla. Entre quais valores de h a aproximação é aceitável? | + | - Calcule a derivada numérica de <latex>f(x)=\frac{sin(x^2)e^{x/3}}{\sqrt{(x^2+4)}}</latex> no ponto x=3 usando o método de Euler simples com passo de discretização entre <latex>h=10^{-8}</latex> e <latex>h=1</latex> e faça um gráfico mostrando a diferença relativa entre a derivada numérica e o valor exato da derivada para ponto flutuante com precisão simples e dupla. Entre quais valores de h a aproximação é aceitável? (Solução [[http://davinci.if.ufrgs.br/wiki/index.php/Derivada_Num%C3%A9rica|aqui]]) |
- Mostre que o método de Euler é instável para qualquer passo h na solução do problema de crescimento exponencial <latex> \frac{dy}{dx}=\lambda x</latex> | - Mostre que o método de Euler é instável para qualquer passo h na solução do problema de crescimento exponencial <latex> \frac{dy}{dx}=\lambda x</latex> | ||
- | - Integre a equação diferencial <latex>\frac{dy}{dt}-y=-\frac{1}{2}e^{t/2}\sin(5t)+5e^{t/2}\cos(5t)</latex> com <latex>y(0)=1</latex> com o método de Euler simples para diferentes valores de passo h=0.1, h = 0.05, h = 0.01, h = 0.005 e h = 0.001 e compare cada solução em t=1,2,3,4 e 5 com a solução exata <latex>y(t)=e^{t/2}sin(5t)</latex> . Faça um gráfico com a solução para h=0.05 entre t=0 e t=5 e a solução exata. | + | - Integre a equação diferencial <latex>\frac{dy}{dt}-y=-\frac{1}{2}e^{t/2}\sin(5t)+5e^{t/2}\cos(5t)</latex> com <latex>y(0)=1</latex> com o método de Euler simples para diferentes valores de passo h=0.1, h = 0.05, h = 0.01, h = 0.005 e h = 0.001 e compare cada solução em t=1,2,3,4 e 5 com a solução exata <latex>y(t)=e^t+e^{t/2}sin(5t)</latex>. Voce pode encontrar essa solução exata digitando a equação diferencial no site do [[http://www.wolframalpha.com|WolframAlpha]] |
+ | - Faça um gráfico com a solução para h=0.05 entre t=0 e t=5 e a solução exata. | ||
- Resolva o problema acima com o método de Euler com diferenças centradas e os mesmos valores de h. Para obter o primeiro passo use o método de Euler simples com passo de discretização dez vezes menor que o usado no resto do intervalo. | - Resolva o problema acima com o método de Euler com diferenças centradas e os mesmos valores de h. Para obter o primeiro passo use o método de Euler simples com passo de discretização dez vezes menor que o usado no resto do intervalo. | ||
* Referências | * Referências | ||
Linha 85: | Linha 86: | ||
<note important>Nesta sequência de problemas utilize o método de Runge-Kutta de quarta ordem com passo <latex>h=10^{-4}</latex></note> | <note important>Nesta sequência de problemas utilize o método de Runge-Kutta de quarta ordem com passo <latex>h=10^{-4}</latex></note> | ||
- | |||
Considere o pêndulo simples em um meio viscoso, que oferece resistência ao seu movimento com uma força proporcional à sua velocidade <latex>F_v=-\gamma v</latex>. A equação de movimento pode ser escrita como | Considere o pêndulo simples em um meio viscoso, que oferece resistência ao seu movimento com uma força proporcional à sua velocidade <latex>F_v=-\gamma v</latex>. A equação de movimento pode ser escrita como | ||
- | <latex>\frac{d^2\theta}{dt^2} + \frac{1}{q}\frac{d\theta}{dt} + \sin{(\theta)}=0</latex>. | + | <latex>\frac{d^2\theta}{dt^2} + \frac{1}{q}\frac{d\theta}{dt} + \sin{(\theta)}=0</latex>.\\ |
- Faça o gráfico da posição como função do tempo para <latex>q=0.2,2.0</latex> e <latex>20.0</latex> com posição angular inicial <latex>\theta_0=\pi/2</latex> e <latex>\omega_0=0</latex>. Note que para valores grandes de q devemos recuperar o movimento sem dissipação (conservativo) e, portanto, devemos utilizar um método simplético, como Verlet ou Euler-Cromer, para integrar a equação de movimento. | - Faça o gráfico da posição como função do tempo para <latex>q=0.2,2.0</latex> e <latex>20.0</latex> com posição angular inicial <latex>\theta_0=\pi/2</latex> e <latex>\omega_0=0</latex>. Note que para valores grandes de q devemos recuperar o movimento sem dissipação (conservativo) e, portanto, devemos utilizar um método simplético, como Verlet ou Euler-Cromer, para integrar a equação de movimento. | ||
- | + | Considere agora uma força periódica impulsionando o pêndulo com força <latex> F_e = A\cos{(\omega_e t)}</latex>. A equação de movimento pode ser escrita como <latex>\frac{d^2\theta}{dt^2} + \frac{1}{q}\frac{d\theta}{dt} + \sin{(\theta)}=A\cos{(\omega_E t)}</latex>. | |
- | Considere agora uma força periódica impulsionando o pêndulo com força <latex> F_e = A\cos{(\omega_e t)}</latex>. A equação de movimento pode ser escrita como | + | - Construa o gráfico <latex>\omega(t) \times t</latex> com <latex>q=2, ~ \omega_E = 2/3</latex> e <latex> A=1.08, 1.10, 1.13</latex> e <latex>1,23</latex>, respectivamente. Observe a mudança de comportamento ao variarmos a amplitude A da força externa. Simule o pêndulo por 100 ciclos da força externa e despreze os primeiros 10 ciclos (quanto vale o período <latex>\tau</latex> da força externa neste exemplo?). |
- | <latex>\frac{d^2\theta}{dt^2} + \frac{1}{q}\frac{d\theta}{dt} + \sin{(\theta)}=A\cos{(\omega_E t)}</latex>. | + | |
- | + | ||
- | + | ||
- | - Construa o gráfico <latex>\omega(t) \times t</latex> com <latex>q=2, ~ \omega_E = 2/3</latex> e <latex> A=1.08, 1.10, 1.13</latex> e <latex>g=1,23</latex>, respectivamente. Observe a mudança de comportamento ao variarmos a amplitude A da força externa. Simule o pêndulo por 100 ciclos da força externa e despreze os primeiros 10 ciclos (quanto vale o período <latex>\tau</latex> da força externa neste exemplo?). | + | |
- Construa o espaço de fases para cada uma das situações descritas acima com a evolução do ponto representativo | - Construa o espaço de fases para cada uma das situações descritas acima com a evolução do ponto representativo | ||
- Faça um gráfico "estroboscópico", chamado seção de Poincaré, imprimindo os pontos no espaço de fase correspondentes a intervalos de tempo múltiplos do período <latex>\tau</latex> da força externa <latex>t=0,\tau,2\tau,\ldots,n\tau,\ldots</latex>. | - Faça um gráfico "estroboscópico", chamado seção de Poincaré, imprimindo os pontos no espaço de fase correspondentes a intervalos de tempo múltiplos do período <latex>\tau</latex> da força externa <latex>t=0,\tau,2\tau,\ldots,n\tau,\ldots</latex>. | ||
Linha 122: | Linha 117: | ||
Considere o mapa logístico <latex>x^{\prime}=f(x)=\lambda x(1-x)</latex> | Considere o mapa logístico <latex>x^{\prime}=f(x)=\lambda x(1-x)</latex> | ||
- | - Faça os gráficos (escala lin-log) da evolução temporal de x a partir de um valor inicial arbitrário para <latex>\lambda=0.01</latex> e <latex>\lambda=0.9</latex>. | + | - Faça os gráficos (escala lin-log) da evolução temporal de x a partir de um valor inicial arbitrário para <latex>\lambda=0.01</latex> e <latex>\lambda=0.9</latex>. |
- | + | - Fazer "gráficos de escada" para os mesmos valores de parâmetro e condição incial x=0.6. Como critério de parada use a condição <latex> x-x^{\prime}<10^{-3}</latex>. | |
- | - Fazer "gráficos de escada" para os mesmos valores de parâmetro e condição incial x=0.6. Como critério de parada use a condição <latex> x-x^{\prime}<10^{-3}</latex>. | + | - Fazer "gráficos de escada" para o caso <latex>\lambda=3.1</latex> e condição inicial x=0.3 e para a segunda iterada f(f(x)) com mesma condição inicial. |
- | + | - Construir o diagrama de bifurcação do mapa logístico na região <latex>0.0<\lambda\le 4.0</latex>. | |
- | - Fazer "gráficos de escada" para o caso <latex>\lambda=3.1</latex> e condição inicial x=0.3 e para a segunda iterada f(f(x)) com mesma condição inicial. | + | - Obter os expoentes de Lyapunov <latex>\Gamma(\lambda)</latex> do mapa logístico na região <latex>0.0<\lambda\le 4.0</latex>. |
- | + | ||
- | - Construir o diagrama de bifurcação do mapa logístico na região <latex>0.0<\lambda\le 4.0</latex>. | + | |
- | + | ||
- | - Obter os expoentes de Lyapunov <latex>\Gamma(\lambda)</latex> do mapa logístico na região <latex>0.0<\lambda\le 4.0</latex>. | + | |
O mapa logístico com <latex>\lambda=4.0</latex> é ergódico, o que significa que podemos substituir médias temporais por médias sobre configurações de um ensemble e, nesse caso, | O mapa logístico com <latex>\lambda=4.0</latex> é ergódico, o que significa que podemos substituir médias temporais por médias sobre configurações de um ensemble e, nesse caso, | ||
- | <latex>\Gamma(\lambda)=\lim_{n\to \infty}\frac{1}{n}\sum_{i=1}^n \log{\left|f^{\prime}(x_i)\right|}=\int \log{\left|f^{\prime}(x)\right|}\rho(x) dx</latex> | + | <latex>\Gamma(\lambda)=\lim_{n\to \infty}\frac{1}{n}\sum_{i=1}^n \log{\left|f^{\prime}(x_i)\right|}=\int \log{\left|f^{\prime}(x)\right|}\rho(x) dx</latex> onde <latex>\rho(x)</latex> é a fração de vezes que a órbita se encontra entre x e x+dx. |
- | onde <latex>\rho(x)</latex> é a fração de vezes que a órbita se encontra entre x e x+dx. | + | - Calcule, subdividindo o intervalo [0,1] em 100 subintervalos, o histograma <latex>\rho(x)</latex> para as primeiras 100000 iterações do mapa logístico com <latex>\lambda=4.0</latex> e encontre <latex>\Gamma(\lambda)</latex>. Esse caso particular admite a solução analítica <latex>\rho(x)=\frac{1}{\pi \sqrt{x(1-x)}}</latex>. Compare os resultados mostrando-os em um mesmo gráfico. |
- | + | - Obter o diagrama de bifurcação para os mapas | |
- | - Calcule, subdividindo o intervalo [0,1] em 100 subintervalos, o histograma <latex>\rho(x)</latex> para as primeiras 100000 iterações do mapa logístico com <latex>\lambda=4.0</latex> e encontre <latex>\Gamma(\lambda)</latex>. Esse caso particular admite a solução analítica <latex>\rho(x)=\frac{1}{\pi \sqrt{x(1-x)}}</latex>. Compare os resultados mostrando-os em um mesmo gráfico. | + | |
- | + | ||
- | - Obter o diagrama de bifurcação para os mapas | + | |
**(a)** <latex> f(x)=r\sin{\left(\pi x\right)}</latex> | **(a)** <latex> f(x)=r\sin{\left(\pi x\right)}</latex> | ||
Linha 152: | Linha 139: | ||
* Calcular a frequência P(i) de ocorrência de cada dígito i na sequência. | * Calcular a frequência P(i) de ocorrência de cada dígito i na sequência. | ||
* Calcular a frequência P(i,j) de ocorrência consecutiva de cada par de dígitos (i,j) na primeira metade da sequência. Utilize essa informação para adivinhar, na segunda metade da sequência, qual o dígito j seguinte a um dado dígito i da sequência. Qual a sua frequência de acertos? Como ela se compara com a probabilidade medida na primeira metade? | * Calcular a frequência P(i,j) de ocorrência consecutiva de cada par de dígitos (i,j) na primeira metade da sequência. Utilize essa informação para adivinhar, na segunda metade da sequência, qual o dígito j seguinte a um dado dígito i da sequência. Qual a sua frequência de acertos? Como ela se compara com a probabilidade medida na primeira metade? | ||
- | + | - A função de correlação <latex>c(\tau)=\frac{\left(2/T\sum_{t=0}^{T/2}x(t)x(t+\tau)\right ) - \left(2/T\sum_{t=0}^{T/2}x(t)\right )\left(2/T\sum_{t=0}^{T/2}x(t+\tau)\right )}{ \left(2/T\sum_{t=0}^{T/2}x(t)^2\right ) - \left(2/T\sum_{t=0}^{T/2}x(t)\right )^2}</latex> é uma das ferramentas tradicionais de análise de sinais. Ela mede o grau de correlação entre o valor do sinal medido em um instante e outro sinal medido em um instante de tempo subsequente. Note que, em sinais não estacionários, a função de correlação pode depender do instante inicial da medida <latex>c(t,\tau)</latex>. Não trataremos desses casos aqui. | |
- | - A função de correlação <latex>c(\tau)=\frac{\left(2/T\sum_{t=0}^{T/2}x(t)x(t+\tau)\right ) - \left(2/T\sum_{t=0}^{T/2}x(t)\right )^2}{ \left(2/T\sum_{t=0}^{T/2}x(t)^2\right ) - \left(2/T\sum_{t=0}^{T/2}x(t)\right )^2}</latex> é uma das ferramentas tradicionais de análise de sinais. Ela mede o grau de correlação entre o valor do sinal medido em um instante e outro sinal medido em um instante de tempo subsequente. Note que, em sinais não estacionários, a função de correlação pode depender do instante inicial da medida <latex>c(t,\tau)</latex>. Não trataremos desses casos aqui. | + | |
- Calcule a função de correlação para uma série de 10000 pontos obtidos com a evolução do mapa logístico com <latex>\lambda=3.569945672</latex> (ponto de acumulação, infinitas órbitas periódicas instáveis emergem neste ponto), <latex>\lambda=3.7</latex>, <latex>\lambda=1+\sqrt{2}</latex> (transição caos-ordem em uma janela de período 3) e <latex>\lambda=4.0</latex> (ergodicidade comprovada para esse valor de parâmetro). | - Calcule a função de correlação para uma série de 10000 pontos obtidos com a evolução do mapa logístico com <latex>\lambda=3.569945672</latex> (ponto de acumulação, infinitas órbitas periódicas instáveis emergem neste ponto), <latex>\lambda=3.7</latex>, <latex>\lambda=1+\sqrt{2}</latex> (transição caos-ordem em uma janela de período 3) e <latex>\lambda=4.0</latex> (ergodicidade comprovada para esse valor de parâmetro). | ||
Linha 162: | Linha 147: | ||
http://mathworld.wolfram.com/ElementaryCellularAutomaton.html\\ | http://mathworld.wolfram.com/ElementaryCellularAutomaton.html\\ | ||
http://classes.yale.edu/fractals/CA/welcome.html\\ | http://classes.yale.edu/fractals/CA/welcome.html\\ | ||
- | |||
- Desenvolva um código para ilustrar a evolução da regra 90 utilizando somente operações lógicas e um bit para cada sítio do sistema, implementando um sistema de 32 ou 64 bits (dependendo do tamanho da palavra no computador utilizado). Implemente condições de contorno periódicas e livres e condição inicial com um bit central 1 e todos os outros 0. | - Desenvolva um código para ilustrar a evolução da regra 90 utilizando somente operações lógicas e um bit para cada sítio do sistema, implementando um sistema de 32 ou 64 bits (dependendo do tamanho da palavra no computador utilizado). Implemente condições de contorno periódicas e livres e condição inicial com um bit central 1 e todos os outros 0. | ||
- | |||
- Desenvolva um código para receber uma dada regra de Wolfram como parâmetro de entrada e retornar a evolução temporal de uma condição inicial por T passos de tempo em um sistema com N sítios. Utilize uma palavra de computador por sítio. Mostre graficamente as evoluções temporais para as regras 30, 60, 90, 102, 126 e 150 com N=T=200. Utilize como condição inicial um único sítio (central) com estado s=1 e todos os outros com s=0 e implemente condições de contorno periódicas (s[N]=s[0]) e livres (s[N]=s[-1]=0); | - Desenvolva um código para receber uma dada regra de Wolfram como parâmetro de entrada e retornar a evolução temporal de uma condição inicial por T passos de tempo em um sistema com N sítios. Utilize uma palavra de computador por sítio. Mostre graficamente as evoluções temporais para as regras 30, 60, 90, 102, 126 e 150 com N=T=200. Utilize como condição inicial um único sítio (central) com estado s=1 e todos os outros com s=0 e implemente condições de contorno periódicas (s[N]=s[0]) e livres (s[N]=s[-1]=0); | ||
- Para a regra 30, escolha um sítio e acompanhe sua evolução temporal 0,1,0,0,1,.... \\ | - Para a regra 30, escolha um sítio e acompanhe sua evolução temporal 0,1,0,0,1,.... \\ | ||
Linha 173: | Linha 156: | ||
[[http://en.wikipedia.org/wiki/Two's_complement|]] | [[http://en.wikipedia.org/wiki/Two's_complement|]] | ||
- | === Lista 7: Números pseudo-aleatórios - 23/11/2010 === | + | === Lista 7: Números pseudo-aleatórios e Monte-Carlo- 23/11/2010 === |
- | Números gerados com o computador, uma máquina de Turing determinística, não pode gerar aleatoriedade com seus elementos lógicos. Podemos, no máximo, gerar sequências de números que passem por determinados [[http://www.stat.fsu.edu/pub/diehard/|testes estatísticos de aleatoriedade]]. A estes números chamamos //pseudo-aleatórios// e sua obtenção depende crucialmente do aumento de entropia gerado pela perda de bits (informação) nas operações lógicas - para os mais interessados: http://www.springerlink.com/content/jn7x3365386phn46/ - | + | Números gerados com o computador, uma máquina de Turing determinística, não pode gerar aleatoriedade com seus elementos lógicos. Podemos, no máximo, gerar sequências de números que passem por determinados [[http://www.stat.fsu.edu/pub/diehard/|testes estatísticos de aleatoriedade]]. A estes números chamamos //pseudo-aleatórios// e sua obtenção depende crucialmente do aumento de entropia gerado pela perda de bits (informação) nas operações lógicas - para os mais interessados: http://www.springerlink.com/content/jn7x3365386phn46/ |
- | Existe geradores de números verdadeiramente aleatórios, baseados na estocasticidade de processos físicos como emissão de fótons em processos radiativos ou espalhamento em divisores de feixes (veja [[http://qrbg.irb.hr/|aqui] um exemplo). Esses geradores são usados para operações críticas, como criptografia e bingo. | + | Existem geradores de números verdadeiramente aleatórios, baseados na estocasticidade de processos físicos como emissão de fótons em processos radiativos ou espalhamento em divisores de feixes (veja [[http://qrbg.irb.hr/|aqui]] um exemplo). Esses geradores são usados para operações críticas, como criptografia e bingo. |
Uma boa fonte de informações a respeito de números pseudo-aleatórios é a biblioteca GSL, que possui, dentre diversas outras aplicações científicas como cálculo de autovalores e solução de sistemas de equações lineares, rotinas que geram números pseudo-aleatórios com diversas receitas. | Uma boa fonte de informações a respeito de números pseudo-aleatórios é a biblioteca GSL, que possui, dentre diversas outras aplicações científicas como cálculo de autovalores e solução de sistemas de equações lineares, rotinas que geram números pseudo-aleatórios com diversas receitas. | ||
http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generation.html | http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generation.html | ||
- Usando o gerador congruencial x=(x*A)mod(B) gere pontos em um espaço 2D e visualize seu resultado. Utilize A=16807 e 65539 e B=2147483648. Estes números podem ser gerados sem a operação mod com números inteiros de 32 bits **com sinal.** Visualize seus resultados normalizando o número aleatório para gerar pontos com alcance [-1...1] | - Usando o gerador congruencial x=(x*A)mod(B) gere pontos em um espaço 2D e visualize seu resultado. Utilize A=16807 e 65539 e B=2147483648. Estes números podem ser gerados sem a operação mod com números inteiros de 32 bits **com sinal.** Visualize seus resultados normalizando o número aleatório para gerar pontos com alcance [-1...1] | ||
- | + | - Usando o mesmo gerador com A=16807 e 65539, crie pontos em um espaço 3D. Visualize seus resultados e, girando a figura no gnuplot, tente visualizar a regularidade nos pontos gerados com 65539. Em 2D, visualize x versus 9x-6y+z onde x,y,z são a trinca de números aleatórios correspondente a um ponto no espaço 3D. Veja como o gerador 65539 é ruim para amostrar pontos no espaço. | |
- | - Usando o mesmo gerador com A=16807 e 65539, crie pontos em um espaço 3D. Visualize seus resultados e, girando a figura no gnuplot, tente visualizar a regularidade nos pontos gerados com 65539. Em 2D, visualize x versus 9x-6y=z onde x,y,z são a trinca de números aleatórios correspondente a um ponto no espaço 3D. Veja como o gerador 65539 é ruim para amostrar pontos no espaço. | + | - Gere <latex>10^4</latex> pares de pontos (x,y) aleatoriamente distribuídos em 2D (com x e y entre -1 e 1). Calcule a fração de números gerados que satisfazem <latex>x^2+y^2 <=1 </latex> . Essa razão deve ser aproximadamente a razao entre a área de um círculo de raio unitário e um quadrado de lado 2. Esta razão vale <latex>\pi/4</latex>. Multiplique sua fração de números por 4 e voce terá calculado pi pelo Método de Monte Carlo. Faça um gráfico mostrando a convergência do valor estimado com o método de Monte Carlo para o valor aproximado de 3.14159265358979323846 (por exemplo, mostre no gráfico a diferença entre o valor aproximado e o valor estimado) utilizando o gerador com A=16807 e compare o resultado obtido com o gerador A=65539. Quantos números aleatórios devemos gerar para se obter <latex>10\%</latex> de precisão na sua estimativa com A=16807? |
- | - Gere pares de pontos (x,y) aleatoriamente distribuídos em 2D (com x e y entre -1 e 1). Calcule a fração de números gerados que satisfazem <latex>x^2+y^2 <=1 </latex> . Essa razão deve ser aproximadamente a razao entre a área de um círculo de raio unitário e um quadrado de lado 2. Esta razão vale <latex>\pi/4</latex>. Multiplique sua fração de números por 4 e voce terá calculado pi pelo Método de Monte Carlo. | + | - Ruína do jogador: Considere dois jogadores, o primeiro com n1 moedas e o segundo com n2 moedas em um jogo de cara ou coroa. Cada vez que um jogador perde, ele entrega uma moeda para o outro jogador e o jogo se repete até um dos jogadores perder todo o dinheiro. Realize esse jogo um milhão de vezes e calcule a fração de vezes que cada jogador perdeu todo o dinheiro. Esse valor deve ser interpretado como a probabilidade <latex>P_i</latex> de cada jogador iir à falência. Compare seu resultado com os valores teóricos para as <latex> P_1=\frac{n_2}{n_1+n_2}</latex> e <latex>P_2=\frac{n_1}{n_1+n_2}</latex>. Para ler mais sobre o assunto [[http://mathworld.wolfram.com/GamblersRuin.html|clique aqui]] |